package SecondeStage.MianXiangDuiXiang.AbstractClass;



public class AbstractClass01 {
    public static void main(String[] args) {
        // 抽象类不能被实例化
        //Animal animal =new Animal();

    }
}

// 当父类的某些方法需要声明，但又不确定具体如何实现，可以将其声明为抽象方法，那么这个类就是抽象类
// 一般来说抽象类会被继承，由它的子类来实现抽象方法
abstract class Animal{
    //抽象方法不能有方法体,即不能有{}
    //抽象方法不能用 private、final、static修饰，因为这些关键字都和重写相违背
    public abstract void eat();
}

// 抽象类不一定要含有抽象方法，还可以有实现的方法。
// 但有抽象方法一定是抽象类
abstract class Person{
    public void hi(){
        System.out.println("hi");
    }
}

// 如果一个类继承了抽象类，则他必须实现抽象类的所有抽象方法，除非它自己也声明为abstract类
class cat extends Animal{
    public void eat(){
        System.out.println("小猫吃冻干");
    }
}